package py.progweb.sgc.model;

import java.io.Serializable;
import java.util.*;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.SequenceGenerator;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name="PAGOS")
public class Pago extends EntidadBase implements Serializable{
	private static final long serialVersionUID = 1L;
	 
	/* ATRIBUTOS DE LA CLASE */
	@Id
	@SequenceGenerator(name="CODPAGOPK_GENERATOR", sequenceName="PAGO_COD_PAGO_PK_SEQ",allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CODPAGOPK_GENERATOR")
	@Column(name="cod_pago_pk")
	private Integer codPagoPK;
	@Column(name="fecha")
	@Temporal(TemporalType.DATE)
	private Date fecha;
	@Column(name="monto")
	private Integer monto;
	@Column(name="estado")
	private String estado;
	
	/* ATRIBUTOS DE RELACION */
	@ManyToOne(cascade=CascadeType.REFRESH)
	@JoinColumn(name="factura")
	private Factura factura;
	@ManyToOne(cascade=CascadeType.REFRESH)
	@JoinColumn(name="cajero")
	private Cajero cajero;
	
	public Pago(){
		super();
    }
	
	public Factura getFactura() {
		return factura;
	}

	public void setFactura(Factura factura) {
		this.factura = factura;
	}

	public Cajero getCajero() {
		return cajero;
	}

	public void setCajero(Cajero cajero) {
		this.cajero = cajero;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Integer getCodPagoPK() {
		return codPagoPK;
	}

	public void setCodPagoPK(Integer codPagoPK) {
		this.codPagoPK = codPagoPK;
	}
	
	
	public Integer getMonto() {
		return monto;
	}

	public void setMonto(Integer monto) {
		this.monto = monto;
	}

	

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	@Override
    public Object getPK(){
            return getCodPagoPK();
    }

    @Override
    public String toString(){
            return "Pago: cod:"+this.getPK();
    }
}
